shortcuts: Try harder to disambiguate search items
authorMatthias Clasen <mclasen@redhat.com>
Mon, 20 Jun 2016 03:24:44 +0000 (23:24 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 20 Jun 2016 03:24:44 +0000 (23:24 -0400)
I noticed that some of the gestures did not show up in the
search results in the builder example in gtk3-demo, because
they share the same title and don't have an accelerator to
disambiguate. Include the shortcut type to handle this case.

gtk/gtkshortcutswindow.c

index 3fdaf78a23f50bc7e42e27113ed4b97dea1afff9..e106f153fc239a0ae14aa5a243ada592413b1e63 100644 (file)
@@ -197,6 +197,9 @@ gtk_shortcuts_window_add_search_item (GtkWidget *child, gpointer data)
 
   if (GTK_IS_SHORTCUTS_SHORTCUT (child))
     {
+      GEnumClass *class;
+      GEnumValue *value;
+
       g_object_get (child,
                     "accelerator", &accelerator,
                     "title", &title,
@@ -207,7 +210,13 @@ gtk_shortcuts_window_add_search_item (GtkWidget *child, gpointer data)
                     "action-name", &action_name,
                     NULL);
 
-      hash_key = g_strdup_printf ("%s-%s", title, accelerator);
+      class = G_ENUM_CLASS (g_type_class_ref (GTK_TYPE_SHORTCUT_TYPE));
+      value = g_enum_get_value (class, shortcut_type);
+
+      hash_key = g_strdup_printf ("%s-%s-%s", title, value->value_nick, accelerator);
+
+      g_type_class_unref (class);
+
       if (g_hash_table_contains (priv->search_items_hash, hash_key))
         {
           g_free (hash_key);